#include "PedagogicalAgent.h"

namespace IAlib
{

PedagogicalAgent::PedagogicalAgent()
{
}

PedagogicalAgent::PedagogicalAgent(const PedagogicalAgent &p_model)
{
    m_actor_id = p_model.getActorId();
    m_actor_level = p_model.getActorLevel();
    m_learner_model = p_model.m_learner_model;
    m_domain_model = p_model.m_domain_model;
    m_step = p_model.m_step;
}

PedagogicalAgent& PedagogicalAgent::operator=(const PedagogicalAgent& p_model)
{
    m_actor_id = p_model.getActorId();
    m_actor_level = p_model.getActorLevel();
    m_learner_model = p_model.m_learner_model;
    m_domain_model = p_model.m_domain_model;
    m_step = p_model.m_step;
    return *this;
}

void PedagogicalAgent::addKnowledge(Knowledges * knowledege)
{
    switch (knowledege->getType())
    {
        case Knowledges::MeansKnowledge :
        {
            MeansKnowledge * means_kw = dynamic_cast<MeansKnowledge *> (knowledege);
            if (means_kw != NULL)
            {
                MeansKnowledge new_means_kw(*means_kw);
                m_knowledges.addMeansKnowledge(new_means_kw);
            }
            break;
        }
        case Knowledges::EnvironmentalKnowledge :
        {
            EnvironmentalKnowledge * env_kw = dynamic_cast<EnvironmentalKnowledge *> (knowledege);
            if (env_kw != NULL)
            {
                EnvironmentalKnowledge new_env_kw(*env_kw);
                m_knowledges.addEnvironmentalKnowledge(new_env_kw);
            }
            break;
        }
        case Knowledges::SocialKnowledge :
        {
            SocialKnowledge * social_kw = dynamic_cast<SocialKnowledge *> (knowledege);
            if (social_kw != NULL)
            {
                SocialKnowledge new_social_kw(*social_kw);
                m_knowledges.addSocialKnowledge(new_social_kw);
            }
            break;
        }
    }
}

void PedagogicalAgent::update()
{

}


}
